package mvc_generator;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;

import mvc_generator.mVCGenerator.ModelMVC;

public class ResourcesDeployer {

	/**
	 * Les fichier d'un Dossier source vers un Dossier Destination Importatnt
	 * pour les librairies JSF et STRUTS
	 * 
	 * @param pathSource
	 *            : Dossier Sources
	 * @param pathDest
	 *            : Dossier Destination
	 * @return Retourne vrai si tous les fichier du repertoire on été copier
	 *         correctement
	 * @author Maïssa Baker
	 */
	private boolean copyFolder(String pathSource, String pathDest) {
		File source = new File(pathSource);
		if (!source.isDirectory()) {
			System.out.println("Ce n'est pas un folder "
					+ source.getAbsolutePath());
			return false;
		}
		File[] files = source.listFiles();

		for (int i = 0; i < files.length; i++) {
			File f = files[i];
			System.out.println("Ajout des Librairies  ==> " + pathDest + "/"
					+ f.getName());
			FileChannel in = null; // canal d'entrée
			FileChannel out = null; // canal de sortie
			try {
				// Init
				in = new FileInputStream(f.getAbsolutePath()).getChannel();
				out = new FileOutputStream(pathDest + "/" + f.getName())
						.getChannel();
				// Copie depuis le in vers le out
				in.transferTo(0, in.size(), out);
			} catch (Exception e) {
				e.printStackTrace(); // n'importe quelle exception
			} finally { // finalement on ferme
				if (in != null) {
					try {
						in.close();
					} catch (IOException e) {
					}
				}
				if (out != null) {
					try {
						out.close();
					} catch (IOException e) {
					}
				}
			}
		}
		return true;
	}
	
	public void deploy(ModelMVC model){
		//copier les fichiers pour le server
		copyFolder("mvc_generator/deploymentResources/Servers","Servers" );
		
		//copier les fichiers nécessaire pour Struts
		copyFolder("mvc_generator/deploymentResources/WebContent", model.getName() + "/WebContent" );
		
		
	}
	
	
}
